package org.example.model.aop;//package org.subside.model.aop;
//
///**
// * @Author : zhangbo
// * @data : 2024/5/15
// * @description :
// */
//    public class ProxyFactory {
//
//        //被代理对象
//        IAccountService toProxyService;
//
//        public void setToProxyService(IAccountService toProxyService) {
//            this.toProxyService = toProxyService;
//        }
//
//        //装配事务工具类
//        TransactionUtil transactionUtil;
//
//        public void setTransactionUtil(TransactionUtil transactionUtil) {
//            this.transactionUtil = transactionUtil;
//        }
//
//        //创建代理
//        public IAccountService createProxy(){
//            return (IAccountService)  Proxy.newProxyInstance(toProxyService.getClass().getClassLoader(), toProxyService.getClass().getInterfaces(), new InvocationHandler() {
//                @Override
//                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//                    Object obj =null; //被代理对象的所有方法
//                    try {
//                        transactionUtil.beginTx();
//                        obj = method.invoke(toProxyService, args);
//                        transactionUtil.commitTx();
//                    } catch (Exception e) {
//                        transactionUtil.rollbackTx();
//                    } finally {
//                        transactionUtil.closeTx();
//                    }
//                    return obj;
//                }
//            });
//
//        }
//    }
